package InterfaceGraphique;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Classe codant la fenetre d'ajout d'un arc entre deux Sommets
 * @author bruno
 *
 */
public class FenetreAjoutArc extends Fenetre {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * bouton qu'il faudra cliquer pour ajouter l'arc
	 * @see JButton
	 */
	private JButton button1 = new JButton("Ajouter l'arc");
	
	/**
	 * bouton qu'il faudra cliquer pour revenir au menu
	 * @see JButton
	 */
	private JButton button2 = new JButton("Annuler");
	
	/**
	 * Liste déroulante dans laquelle on selectionnera la personne qui "like" (origine de l'arc)
	 * @see JComboBox
	 */
	private JComboBox<String> name = new JComboBox<String>(Test.g.getTabUtilisateur());
	
	/**
	 * Liste déroulante dans laquelle on selectionnera la personne qui est "liké" (destination de l'arc)
	 * @see JComboBox
	 */
	private JComboBox<String> name2 = new JComboBox<String>(Test.g.getTabSommet());
	
	/**
	 * Constructeur de la fenetre
	 */
	public FenetreAjoutArc(){
		Test.disable(); // on désactive le menu
		
		//on précise certaines propriétés de notre fenetre;
		this.setTitle("Ajouter un arc");
		this.setSize(500, 200);
		this.setResizable(true);
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		
		//permet de savoir quand les boutons sont cliqués
		button1.addActionListener(this);
		button2.addActionListener(this);
		
		JPanel main_container = new JPanel();
		main_container.setLayout(new GridBagLayout());
		
		GridBagConstraints gbc = new GridBagConstraints();
		
		//on précise le placement du premier composant sur le container
		gbc.gridx = 0;
		gbc.gridy = 0;
		//on précise la taille des composants par rapport à la grille 
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.ipady = 10;
		gbc.anchor = GridBagConstraints.WEST;
		
		JLabel label_for_name = new JLabel("Saisir le nom de la premi�re personne :");
		name.setPreferredSize(new Dimension(100, 25));
		main_container.add(label_for_name, gbc);
		gbc.gridx = 1;
		main_container.add(name, gbc);

		gbc.gridx = 0;
		gbc.gridy = 1;
		
		JLabel label_for_name2 = new JLabel("Saisir le nom de la deuxi�me personne ou de la page :");
		name2.setPreferredSize(new Dimension(100, 25));
		main_container.add(label_for_name2, gbc);
		gbc.gridx = 1;
		main_container.add(name2, gbc);
		
		gbc.gridx = 0;
		gbc.gridy = 2;
		
		main_container.add(button1, gbc);
		gbc.gridx = 1;
		main_container.add(button2, gbc);
		
		this.setContentPane(main_container);
	}
	
	/**
	 * Méthode qui définit ce que le programme fera en fonction des boutons cliqués
	 * @param e l'action dont on peut récupérer la source vie e.getSource()
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == button1){
			boolean isGoodToSend = true;
			
			String field_one = (String) name.getSelectedItem();
			String field_two = (String) name2.getSelectedItem();
			
			// on vérifie que les noms soient pas vide
			if(field_one.equals("") || field_two.equals("")) isGoodToSend = false;
			
			if(isGoodToSend){
				if(Test.g.ajouterArc(field_one, field_two))
				Test.f.load.setText("Arc ajout� !!!");
				else 
				Test.f.load.setText("Erreur lors de l'ajout de l'arc !!!");
			}
			else Test.f.load.setText("Erreur lors de l'ajout de l'arc !!!");
			
			//fermeture de la fenetre et réactivation du menu
			Test.reEnable();
			this.dispose();
		}
		if(e.getSource() == button2){
			Test.reEnable();
			this.dispose();
		}
	}
	

}
